1. Technical Field
The present invention is directed generally toward metal programmable devices and, more particularly, to a method and apparatus for embedding a flexible memory core in metal programmable devices.
2. Description of the Related Art
In recent years, there has been a growth in products in which semi-custom techniques are used. Application-specific integrated circuits (ASIC) are widely used in consumer, manufacturing, communications, and amusement products, as well as other applications where a specific circuit may be needed. ASICs are very useful in bringing unique, customer-specific products to market on time.
The gate array is an example of an ASIC. Gate arrays are arrays of elements, such as AND or NAND gates, although today the term “gate array” usually refers to an array of transistors. These transistors can be tightly packed on an integrated circuit and later connected with a metal layer to form the application-specific circuit. These are referred to as metal programmable devices.
As gate array products became more sophisticated, it became necessary to form a memory in the circuit. Memory cells may be formed from the gate array transistors themselves. This approach is very flexible, because any number of memory cells of any type can be formed, within the area limitations in the gate array. However, each memory cell uses several transistors and a memory core may take up an undesirable amount of area and transistors in the gate array.
Another solution is to embed a memory in the gate array chip. Memory cells may be fabricated much more densely than memory cells formed from transistors in the gate array. Interface logic is also provided for the application-specific circuit to access the memory core. This solution allows much more memory to be provided in a smaller area. However, a fixed amount of memory is embedded in all gate array products. Thus, one application-specific circuit may require only a small amount of the embedded memory, in which case the remaining, unused area is wasted. Another application-specific circuit may require more embedded memory than is provided, in which case the circuit may not be possible with the gate array product. Furthermore, the type of memory is also fixed in the gate array product. Therefore, if a single port memory is provided and the application-specific circuit requires a dual port memory, it will not be possible to produce the application-specific circuit with the gate array product.
Therefore, it would be advantageous to provide large amounts of memory on a metal programmable device without sacrificing flexibility.